package DyingBaby.demo;

import DyingBaby.backend.common.InteractiveCacheConfig;
import DyingBaby.backend.dm.pageCache.PageCache;
import DyingBaby.backend.dm.pageCache.PageCacheImpl;
import java.io.File;

/**
 * 交互式功能测试演示程序
 */
public class InteractiveTestDemo {
    
    public static void main(String[] args) {
        try {
            // 创建临时测试文件
            File testFile = File.createTempFile("interactive_test", ".db");
            testFile.deleteOnExit();
            
            // 先删除可能存在的文件
            if (testFile.exists()) {
                testFile.delete();
            }
            
            System.out.println("=== 交互式功能测试演示 ===");
            
            // 创建页面缓存
            PageCacheImpl pageCache = PageCache.create(testFile.getAbsolutePath().replace(".db", ""), 80 * 1024);
            
            // 测试1: 用户选择查看（应该显示日志）
            System.out.println("\n1. 测试用户选择查看（应该显示详细日志）:");
            InteractiveCacheConfig.setUserChoice(true);
            
            int page1 = pageCache.newPage("Page 1 data".getBytes());
            int page2 = pageCache.newPage("Page 2 data".getBytes());
            pageCache.getPage(page1);
            pageCache.getPage(page2);
            
            System.out.println("操作完成，统计信息: " + pageCache.getCacheStats());
            
            // 测试2: 用户选择不查看（应该不显示日志）
            System.out.println("\n2. 测试用户选择不查看（应该不显示详细日志）:");
            InteractiveCacheConfig.setUserChoice(false);
            
            pageCache.getPage(page1);
            pageCache.getPage(page2);
            
            System.out.println("操作完成，统计信息: " + pageCache.getCacheStats());
            
            // 测试3: 重置统计并再次测试
            System.out.println("\n3. 重置统计信息后再次测试:");
            pageCache.resetCacheStats();
            InteractiveCacheConfig.setUserChoice(true);
            
            pageCache.getPage(page1);
            pageCache.getPage(page2);
            
            System.out.println("操作完成，统计信息: " + pageCache.getCacheStats());
            
            pageCache.close();
            
            System.out.println("\n=== 测试完成 ===");
            System.out.println("现在日志显示完全由用户选择控制！");
            
        } catch (Exception e) {
            System.err.println("测试失败: " + e.getMessage());
            e.printStackTrace();
        }
    }
}
